Custom Exceptions তৈরি এবং ব্যবহার
F# এ Custom Exceptions তৈরি করা এবং ব্যবহার করা খুবই সহজ এবং এটি কোডের মধ্যে নির্দিষ্ট ত্রুটি সনাক্তকরণ এবং হ্যান্ডলিংয়ের জন্য অত্যন্ত কার্যকরী। Custom Exceptions সাধারণত ফাংশনাল প্রোগ্রামিং ভাষাগুলিতে ব্যবহার করা হয়, যেখানে আপনি নিজের প্রয়োজন অনুসারে নতুন ত্রুটি তৈরি করতে পারেন এবং সেগুলোর সাথে বিভিন্ন লজিক পরিচালনা করতে পারেন।
১. Custom Exception তৈরি করা
F# এ custom exceptions তৈরি করতে আপনি exception কিওয়ার্ড ব্যবহার করবেন। এটি একটি নতুন ত্রুটি শ্রেণী তৈরি করবে যা একটি বা একাধিক ফিল্ড ধারণ করতে পারে, যেমন message, data, ইত্যাদি। আপনি যখন একটি custom exception তৈরি করবেন, তখন সেটি সাধারণত try/with ব্লকের মধ্যে ব্যবহার করা হয়।
Custom Exception এর ডিক্লারেশন:
// Define a custom exception type
exception NegativeNumberException of stringএখানে, NegativeNumberException একটি custom exception, যা একটি string আর্গুমেন্ট গ্রহণ করে। আপনি এটি ব্যবহার করতে পারেন যখন একটি নেতিবাচক সংখ্যা পাওয়া যায়।
২. Custom Exception ব্যবহার করা
Custom exception ব্যবহার করার জন্য, আপনি try/with ব্লক ব্যবহার করবেন। যখন ত্রুটি ঘটে, তখন with ব্লকটি সেই ত্রুটিটি ক্যাচ (catch) করবে এবং আপনি সেটি হ্যান্ডেল করতে পারবেন।
Custom Exception ব্যবহার করার উদাহরণ:
// Function that throws a custom exception
let checkPositiveNumber num =
if num < 0 then
raise (NegativeNumberException "Input cannot be a negative number")
else
printfn "Input is valid"
// Use try...with to handle the exception
try
checkPositiveNumber -5
with
| NegativeNumberException msg -> printfn "Error: %s" msgএখানে, checkPositiveNumber ফাংশনটি num যদি নেতিবাচক হয় তবে NegativeNumberException ত্রুটি উত্পন্ন করবে। try...with ব্লকের মাধ্যমে ত্রুটিটি হ্যান্ডেল করা হচ্ছে এবং ত্রুটির বার্তা কনসোলে আউটপুট হিসেবে প্রদর্শন করা হচ্ছে।
৩. Custom Exception এর সাথে আরও তথ্য ব্যবহার করা
আপনি custom exceptions এর মাধ্যমে একাধিক ফিল্ড বা তথ্য যুক্ত করতে পারেন। আপনি এটি করতে পারেন যাতে আপনার exception আরও বেশি তথ্য প্রদান করে, যেমন কোন পরিসরের মধ্যে ত্রুটি ঘটেছে, কোন কন্ডিশনের জন্য ত্রুটি এসেছে ইত্যাদি।
Custom Exception with Multiple Fields:
// Define a custom exception with multiple fields
exception InvalidAgeException of string * int
// Function that throws an exception with multiple fields
let checkAge age =
if age < 0 then
raise (InvalidAgeException ("Age cannot be negative", age))
else
printfn "Age is valid"
// Use try...with to handle the exception
try
checkAge -10
with
| InvalidAgeException (msg, age) -> printfn "Error: %s. Age provided: %d" msg ageএখানে, InvalidAgeException একটি custom exception যা দুটি ফিল্ড ধারণ করে: একটি string (ত্রুটির বার্তা) এবং একটি int (ত্রুটির সাথে সম্পর্কিত বয়স)। যখন age নেতিবাচক হয়, তখন exception উত্পন্ন হয় এবং সেই exception এর মধ্যে দুটি মান (বার্তা এবং বয়স) সংরক্ষিত থাকে।
৪. Exception হ্যান্ডলিংয়ে Guard ব্যবহার করা
F# তে guards এর মাধ্যমে আপনি আরও সুনির্দিষ্টভাবে exception হ্যান্ডলিং করতে পারেন। যেমন, আপনি কিছু শর্ত যাচাই করার জন্য guards ব্যবহার করতে পারেন যা exception এর সাথে সম্পর্কিত।
Guard ব্যবহার করে Exception হ্যান্ডলিং:
// Function with custom exception and guard
let divide a b =
match b with
| 0 -> raise (DivideByZeroException "Cannot divide by zero")
| _ -> a / b
try
divide 10 0
with
| DivideByZeroException msg -> printfn "Error: %s" msgএখানে, divide ফাংশনে যদি b এর মান 0 হয়, তবে DivideByZeroException ত্রুটি সৃষ্টি হবে। আমরা try...with ব্লক এবং guard ব্যবহার করে এই ত্রুটিটিকে হ্যান্ডেল করছি।
৫. Custom Exception এর সাথে Stack Trace ব্যবহার করা
F# এ stack trace ব্যবহার করা অত্যন্ত সহজ। যখন আপনি exception তৈরি করেন, তখন আপনি সেটির সাথে stack trace যোগ করতে পারেন যাতে ত্রুটির উৎপত্তি চিহ্নিত করা সহজ হয়।
Stack Trace সহ Custom Exception:
// Define a custom exception with stack trace
exception FileNotFoundException of string
let openFile fileName =
if fileName = "" then
raise (FileNotFoundException "File not found!")
else
printfn "Opening file: %s" fileName
try
openFile ""
with
| FileNotFoundException msg ->
printfn "Error: %s" msg
printfn "Stack Trace: %s" (System.Environment.StackTrace)এখানে, FileNotFoundException এর মাধ্যমে একটি কাস্টম exception তৈরি করা হয়েছে এবং যখন ফাইলের নাম শূন্য থাকে, তখন এটি exception উত্পন্ন করবে। stack trace সহ ত্রুটিটি আউটপুট করা হয়েছে।
উপসংহার
Custom Exceptions F# এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে কাস্টম ত্রুটি তৈরি এবং ত্রুটির পরিস্থিতি হ্যান্ডল করার জন্য নমনীয়তা প্রদান করে। আপনি exception কিওয়ার্ড ব্যবহার করে নতুন ত্রুটি তৈরি করতে পারেন এবং try/with ব্লকের মাধ্যমে ত্রুটির ব্যবস্থাপনা করতে পারেন। এছাড়া, আপনি multiple fields, guards, এবং stack trace সহ কাস্টম exceptions তৈরি করতে পারেন যা আপনার কোডের ত্রুটি সনাক্তকরণ ও হ্যান্ডলিংয়ের প্রক্রিয়াকে আরও শক্তিশালী ও কার্যকরী করে তোলে।
Read more